package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.entity.ProjectMsgTemplateDO;

import java.util.List;

public interface ProjectMsgTemplateService extends IService<ProjectMsgTemplateDO> {

    /** 绑定或更换：将项目在该type下的其他启用绑定置为停用，然后启用当前模板 */
    void bind(Long projectId, Long templateId, Integer type, String operator);

    /** 停用该项目在此type下的启用绑定 */
    void disable(Long projectId, Integer type, String operator);

    /** 返回项目在该type下的启用模板ID，未绑定则返回null */
    Long getActiveTemplateId(Long projectId, Integer type);

    /** 断言该项目在该type下已有启用模板，否则抛异常 */
    void assertHasActive(Long projectId, Integer type);

    /** 校验指定模板是否是该项目该type的启用绑定，否则抛异常 */
    void assertIsActiveBinding(Long projectId, Integer type, Long templateId);

    /** 根据模板ID查询绑定的项目ID列表 */
    List<Long> getProjectIdsByTemplateId(Long templateId);
}


